package apis

import (
	"k8sops/pkg/services/agents"
	"net/http"

	"github.com/gin-gonic/gin"
)

func NamespaceCopy(c *gin.Context) {
	var (
		jsonData        JsonData
		sourceNamespace string
		targetNamespace string
		err             error
	)

	err = c.ShouldBindJSON(&jsonData)
	if err != nil {
		c.JSON(http.StatusOK, gin.H{
			"code": 400,
			"msg":  "json data error",
		})
		return
	}

	sourceNamespace = jsonData.SourceNamespace
	targetNamespace = jsonData.TargetNamespace

	err = agents.NamespaceCopy(sourceNamespace, targetNamespace)
	if err != nil {
		c.JSON(http.StatusOK, gin.H{
			"code": 400,
			"msg":  err.Error(),
		})
		return
	}

	c.JSON(http.StatusOK, gin.H{
		"code": 200,
		"msg":  "success",
	})
}

func NamespaceUpOff(c *gin.Context) {
	var (
		jsonData   JsonData
		namespace  string
		specStatus string
		err        error
	)

	err = c.ShouldBindJSON(&jsonData)
	if err != nil {
		c.JSON(http.StatusOK, gin.H{
			"code": 400,
			"msg":  "json data error",
		})
		return
	}

	namespace = jsonData.Namespace
	specStatus = jsonData.SpecStatus

	err = agents.NamespaceUpOff(namespace, specStatus)
	if err != nil {
		c.JSON(http.StatusOK, gin.H{
			"code": 400,
			"msg":  err.Error(),
		})
		return
	}

	c.JSON(http.StatusOK, gin.H{
		"code": 200,
		"msg":  "success",
	})
}

func NamespaceResources(c *gin.Context) {
	var (
		jsonData  JsonData
		namespace string
	)
	err := c.ShouldBindJSON(&jsonData)
	if err != nil {
		c.JSON(http.StatusOK, gin.H{
			"code": 400,
			"msg":  "json data error",
		})
		return
	}
	namespace = jsonData.Namespace

	resource, err := agents.NamespaceResources(namespace)
	if err != nil {
		c.JSON(http.StatusOK, gin.H{
			"code": 400,
			"msg":  err.Error(),
		})
		return
	}

	c.JSON(http.StatusOK, gin.H{
		"code": 200,
		"msg":  "success",
		"data": resource,
	})
}
